package cn.tedu.test02;

import java.util.Arrays;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.stereotype.Component;

/**
 * BeanFactory     bean工厂
 * PostProcessor  后期处理器
 * BeanFactoryPostProcessor  bean工厂后期处理器
 * Spring官方不建议自行处理！！！
 */
@Component
public class MyBFPP implements BeanFactoryPostProcessor {
    /**
     * postProcess 后置处理
     * BeanFactory     bean工厂
     * postProcessBeanFactory 方法是在Spring加载完全部的Bean定义以后执行
     * ConfigurableListableBeanFactory 封装了全部的Bean定义信息
     *
     * @throws BeansException Bean定义加载失败时所抛出的异常，如果抛出了异常，Spring初始化失败
     */

    @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
            throws BeansException {
        String[] names = beanFactory.getBeanDefinitionNames();
        System.out.println(Arrays.toString(names));
    }
}
